import streamlit as st
import pandas as pd
import plotly.express as px
import plotly.graph_objects as go
from plotly.subplots import make_subplots
import numpy as np
from datetime import datetime, timedelta
import random
import hashlib

# 页面配置已在主应用中设置

# 页面标题
st.title("📱 移动端界面")
st.markdown("---")

# 侧边栏导航
st.sidebar.title("功能导航")
page_selection = st.sidebar.selectbox(
    "选择功能模块",
    ["移动端概览", "快速操作", "扫码功能", "消息通知", "离线功能", "用户设置", "移动端分析"]
)

# 移动端概览页面
if page_selection == "移动端概览":
    st.header("📊 移动端概览")
    
    # 移动端使用统计
    col1, col2, col3, col4 = st.columns(4)
    
    with col1:
        st.metric(
            label="移动端用户",
            value="156人",
            delta="+12人"
        )
    
    with col2:
        st.metric(
            label="日活跃用户",
            value="89人",
            delta="+5人"
        )
    
    with col3:
        st.metric(
            label="今日操作",
            value="342次",
            delta="+28次"
        )
    
    with col4:
        st.metric(
            label="系统响应时间",
            value="0.8秒",
            delta="-0.2秒"
        )
    
    # 移动端功能使用分析
    col1, col2 = st.columns(2)
    
    with col1:
        # 功能使用频率
        feature_usage = pd.DataFrame({
            '功能模块': ['库存查询', '订单管理', '扫码入库', '运输跟踪', '消息通知', '报表查看'],
            '使用次数': [156, 134, 98, 87, 76, 45],
            '使用率': ['89%', '76%', '56%', '49%', '43%', '26%']
        })
        
        fig_usage = px.bar(feature_usage, x='功能模块', y='使用次数',
                         title="移动端功能使用频率")
        fig_usage.update_layout(xaxis_tickangle=45)
        st.plotly_chart(fig_usage, use_container_width=True)
    
    with col2:
        # 设备类型分布
        device_types = pd.DataFrame({
            '设备类型': ['Android手机', 'iPhone', 'iPad', 'Android平板'],
            '用户数': [89, 45, 15, 7],
            '占比': ['57.1%', '28.8%', '9.6%', '4.5%']
        })
        
        fig_devices = px.pie(device_types, values='用户数', names='设备类型',
                           title="移动设备类型分布")
        st.plotly_chart(fig_devices, use_container_width=True)
    
    # 移动端用户活跃度
    st.subheader("用户活跃度分析")
    
    # 生成活跃度数据
    dates = pd.date_range(start='2024-03-01', end='2024-03-15', freq='D')
    activity_data = pd.DataFrame({
        '日期': dates,
        '日活跃用户': [80 + 20*np.sin(i*2*np.pi/7) + np.random.normal(0, 5) 
                     for i in range(len(dates))],
        '操作次数': [300 + 100*np.sin(i*2*np.pi/7) + np.random.normal(0, 20) 
                   for i in range(len(dates))]
    })
    
    fig_activity = make_subplots(specs=[[{"secondary_y": True}]])
    
    fig_activity.add_trace(
        go.Scatter(x=activity_data['日期'], y=activity_data['日活跃用户'],
                  name="日活跃用户", line=dict(color="blue")),
        secondary_y=False,
    )
    
    fig_activity.add_trace(
        go.Scatter(x=activity_data['日期'], y=activity_data['操作次数'],
                  name="操作次数", line=dict(color="red")),
        secondary_y=True,
    )
    
    fig_activity.update_xaxes(title_text="日期")
    fig_activity.update_yaxes(title_text="日活跃用户数", secondary_y=False)
    fig_activity.update_yaxes(title_text="操作次数", secondary_y=True)
    fig_activity.update_layout(title_text="移动端用户活跃度趋势")
    
    st.plotly_chart(fig_activity, use_container_width=True)
    
    # 移动端性能监控
    st.subheader("移动端性能监控")
    
    performance_data = pd.DataFrame({
        '指标': ['页面加载时间', 'API响应时间', '离线同步时间', '电池消耗', '内存使用'],
        '当前值': ['1.2秒', '0.8秒', '3.5秒', '5%/小时', '45MB'],
        '目标值': ['<2秒', '<1秒', '<5秒', '<8%/小时', '<60MB'],
        '状态': ['优秀', '优秀', '良好', '优秀', '良好']
    })
    
    # 根据状态设置行颜色
    # 使用缓存来避免重复计算样式，减少表格抖动
    def highlight_performance(row):
        if row['状态'] == '优秀':
            return ['background-color: #e8f5e8'] * len(row)
        elif row['状态'] == '良好':
            return ['background-color: #fff3cd'] * len(row)
        else:
            return ['background-color: #ffebee'] * len(row)
    
    styled_df = performance_data.style.apply(highlight_performance, axis=1)
    st.dataframe(styled_df, use_container_width=True)

# 快速操作页面
elif page_selection == "快速操作":
    st.header("⚡ 快速操作")
    
    # 常用快速操作
    st.subheader("常用操作")
    
    col1, col2, col3, col4 = st.columns(4)
    
    with col1:
        if st.button("📦 快速入库", use_container_width=True):
            st.success("跳转到快速入库页面")
    
    with col2:
        if st.button("📤 快速出库", use_container_width=True):
            st.success("跳转到快速出库页面")
    
    with col3:
        if st.button("🔍 库存查询", use_container_width=True):
            st.success("跳转到库存查询页面")
    
    with col4:
        if st.button("📋 盘点记录", use_container_width=True):
            st.success("跳转到盘点记录页面")
    
    # 快速入库界面
    st.subheader("快速入库")
    
    col1, col2 = st.columns(2)
    
    with col1:
        product_code = st.text_input("商品编码", placeholder="扫码或手动输入")
        product_name = st.text_input("商品名称", "自动识别")
        warehouse = st.selectbox("入库仓库", ["主仓库", "分仓库A", "分仓库B"])
    
    with col2:
        quantity = st.number_input("入库数量", min_value=1, value=1)
        location = st.text_input("存储位置", placeholder="A01-01-01")
        operator = st.text_input("操作员", "当前用户")
    
    col1, col2, col3 = st.columns(3)
    
    with col1:
        if st.button("📷 扫码输入", use_container_width=True):
            st.info("启动摄像头扫码...")
    
    with col2:
        if st.button("✅ 确认入库", type="primary", use_container_width=True):
            st.success("入库操作成功！")
    
    with col3:
        if st.button("🔄 重置表单", use_container_width=True):
            st.info("表单已重置")
    
    # 最近操作记录
    st.subheader("最近操作记录")
    
    recent_operations = pd.DataFrame({
        '时间': ['14:30', '14:25', '14:20', '14:15', '14:10'],
        '操作类型': ['入库', '出库', '查询', '入库', '盘点'],
        '商品编码': ['P001', 'P002', 'P003', 'P004', 'P005'],
        '商品名称': ['电子产品A', '机械配件B', '化工原料C', '食品D', '纺织品E'],
        '数量': [50, -30, 0, 100, 0],
        '操作员': ['张三', '李四', '王五', '张三', '赵六'],
        '状态': ['成功', '成功', '成功', '成功', '成功']
    })
    
    st.dataframe(recent_operations, use_container_width=True)
    
    # 快捷设置
    st.subheader("快捷设置")
    
    col1, col2 = st.columns(2)
    
    with col1:
        st.checkbox("自动保存操作记录", value=True)
        st.checkbox("操作完成后震动提醒", value=True)
        st.checkbox("启用语音播报", value=False)
    
    with col2:
        st.selectbox("默认仓库", ["主仓库", "分仓库A", "分仓库B"])
        st.selectbox("扫码模式", ["连续扫码", "单次扫码"])
        st.selectbox("数据同步频率", ["实时", "每5分钟", "每10分钟"])

# 扫码功能页面
elif page_selection == "扫码功能":
    st.header("📷 扫码功能")
    
    # 扫码操作界面
    st.subheader("扫码操作")
    
    col1, col2 = st.columns([2, 1])
    
    with col1:
        # 模拟摄像头界面
        st.markdown(
            """
            <div style="
                border: 2px dashed #ccc;
                height: 300px;
                display: flex;
                align-items: center;
                justify-content: center;
                background-color: #f9f9f9;
                border-radius: 10px;
            ">
                <div style="text-align: center; color: #666;">
                    <h3>📷 摄像头预览区域</h3>
                    <p>将条码/二维码对准扫描框</p>
                    <div style="
                        width: 200px;
                        height: 200px;
                        border: 2px solid #007bff;
                        margin: 20px auto;
                        position: relative;
                    ">
                        <div style="
                            position: absolute;
                            top: -2px;
                            left: -2px;
                            width: 20px;
                            height: 20px;
                            border-top: 2px solid #007bff;
                            border-left: 2px solid #007bff;
                        "></div>
                        <div style="
                            position: absolute;
                            top: -2px;
                            right: -2px;
                            width: 20px;
                            height: 20px;
                            border-top: 2px solid #007bff;
                            border-right: 2px solid #007bff;
                        "></div>
                        <div style="
                            position: absolute;
                            bottom: -2px;
                            left: -2px;
                            width: 20px;
                            height: 20px;
                            border-bottom: 2px solid #007bff;
                            border-left: 2px solid #007bff;
                        "></div>
                        <div style="
                            position: absolute;
                            bottom: -2px;
                            right: -2px;
                            width: 20px;
                            height: 20px;
                            border-bottom: 2px solid #007bff;
                            border-right: 2px solid #007bff;
                        "></div>
                    </div>
                </div>
            </div>
            """,
            unsafe_allow_html=True
        )
    
    with col2:
        st.subheader("扫码设置")
        
        scan_mode = st.selectbox("扫码模式", ["条码", "二维码", "自动识别"])
        scan_sound = st.checkbox("扫码提示音", value=True)
        scan_vibration = st.checkbox("扫码震动", value=True)
        auto_focus = st.checkbox("自动对焦", value=True)
        
        st.markdown("---")
        
        if st.button("🔦 开启闪光灯", use_container_width=True):
            st.info("闪光灯已开启")
        
        if st.button("📷 拍照识别", use_container_width=True):
            st.info("拍照识别功能启动")
        
        if st.button("📁 从相册选择", use_container_width=True):
            st.info("打开相册选择图片")
    
    # 扫码结果显示
    st.subheader("扫码结果")
    
    # 模拟扫码结果
    scan_result = {
        "扫码时间": "2024-03-15 14:30:25",
        "扫码内容": "P001234567890",
        "识别类型": "商品条码",
        "商品信息": {
            "商品编码": "P001234567890",
            "商品名称": "电子产品A",
            "规格型号": "EA-001",
            "单位": "个",
            "当前库存": 150,
            "安全库存": 50,
            "仓库位置": "A01-01-01"
        }
    }
    
    col1, col2 = st.columns(2)
    
    with col1:
        st.json(scan_result)
    
    with col2:
        st.subheader("快速操作")
        
        if st.button("📦 快速入库", use_container_width=True):
            st.success("跳转到入库页面")
        
        if st.button("📤 快速出库", use_container_width=True):
            st.success("跳转到出库页面")
        
        if st.button("🔍 查看详情", use_container_width=True):
            st.success("跳转到商品详情页面")
        
        if st.button("📋 添加到盘点", use_container_width=True):
            st.success("已添加到盘点清单")
    
    # 扫码历史记录
    st.subheader("扫码历史记录")
    
    scan_history = pd.DataFrame({
        '时间': ['14:30', '14:25', '14:20', '14:15', '14:10', '14:05', '14:00', '13:55'],
        '扫码内容': ['P001234567890', 'P002345678901', 'P003456789012', 'P004567890123', 
                   'P005678901234', 'P006789012345', 'P007890123456', 'P008901234567'],
        '识别类型': ['商品条码', '商品条码', '二维码', '商品条码', '商品条码', '二维码', '商品条码', '商品条码'],
        '商品名称': ['电子产品A', '机械配件B', '化工原料C', '食品D', '纺织品E', '包装材料F', '工具G', '配件H'],
        '操作类型': ['入库', '出库', '查询', '入库', '盘点', '查询', '出库', '入库'],
        '状态': ['成功', '成功', '成功', '成功', '成功', '成功', '成功', '成功']
    })
    
    st.dataframe(scan_history, use_container_width=True)
    
    # 扫码统计
    st.subheader("扫码统计")
    
    col1, col2, col3 = st.columns(3)
    
    with col1:
        st.metric("今日扫码次数", "156次", "+23次")
    
    with col2:
        st.metric("扫码成功率", "98.7%", "+0.5%")
    
    with col3:
        st.metric("平均识别时间", "0.8秒", "-0.1秒")

# 消息通知页面
elif page_selection == "消息通知":
    st.header("🔔 消息通知")
    
    # 通知概览
    st.subheader("通知概览")
    
    col1, col2, col3, col4 = st.columns(4)
    
    with col1:
        st.metric("未读消息", "12条", "+3条")
    
    with col2:
        st.metric("今日消息", "28条", "+5条")
    
    with col3:
        st.metric("系统通知", "8条", "+2条")
    
    with col4:
        st.metric("业务提醒", "15条", "+6条")
    
    # 消息列表
    st.subheader("消息列表")
    
    # 消息筛选
    col1, col2, col3 = st.columns(3)
    
    with col1:
        message_type = st.selectbox("消息类型", ["全部", "系统通知", "业务提醒", "预警消息", "审批通知"])
    
    with col2:
        message_status = st.selectbox("消息状态", ["全部", "未读", "已读"])
    
    with col3:
        date_range = st.selectbox("时间范围", ["今天", "最近3天", "最近7天", "最近30天"])
    
    # 消息数据
    messages = pd.DataFrame({
        '时间': ['14:30', '14:15', '13:45', '13:20', '12:50', '12:30', '11:45', '11:20', '10:30', '10:15'],
        '类型': ['业务提醒', '系统通知', '预警消息', '业务提醒', '审批通知', '系统通知', '业务提醒', '预警消息', '业务提醒', '系统通知'],
        '标题': ['库存不足提醒', '系统维护通知', '运输延误预警', '订单待处理', '采购申请审批', '版本更新通知', 
               '盘点任务提醒', '设备故障预警', '客户投诉处理', '数据备份完成'],
        '内容': ['商品P001库存不足，当前库存15个，安全库存50个', '系统将于今晚22:00-24:00进行维护', 
               '运单TN001可能延误2小时到达', '订单OR001待您处理，请及时跟进', 
               '采购申请PA001等待您的审批', '移动端已更新至v2.1.0版本',
               '仓库A区盘点任务已分配给您', '车辆京A001发动机温度异常', 
               '客户投诉CS001需要您的处理', '数据备份已成功完成'],
        '发送人': ['系统', '管理员', '系统', '订单系统', '采购系统', '系统', '仓储系统', '车辆系统', '客服系统', '系统'],
        '状态': ['未读', '已读', '未读', '未读', '已读', '已读', '未读', '未读', '已读', '已读'],
        '优先级': ['高', '中', '高', '中', '中', '低', '中', '高', '高', '低']
    })
    
    # 根据状态和优先级设置行颜色
    # 使用缓存来避免重复计算样式，减少表格抖动
    def highlight_messages(row):
        if row['状态'] == '未读' and row['优先级'] == '高':
            return ['background-color: #ffebee'] * len(row)
        elif row['状态'] == '未读':
            return ['background-color: #fff3cd'] * len(row)
        else:
            return ['background-color: #f5f5f5'] * len(row)
    
    styled_df = messages.style.apply(highlight_messages, axis=1)
    st.dataframe(styled_df, use_container_width=True)
    
    # 消息操作
    st.subheader("消息操作")
    
    col1, col2, col3, col4 = st.columns(4)
    
    with col1:
        if st.button("📖 全部标记已读", use_container_width=True):
            st.success("所有消息已标记为已读")
    
    with col2:
        if st.button("🗑️ 删除已读消息", use_container_width=True):
            st.success("已读消息已删除")
    
    with col3:
        if st.button("🔄 刷新消息", use_container_width=True):
            st.success("消息列表已刷新")
    
    with col4:
        if st.button("⚙️ 通知设置", use_container_width=True):
            st.success("跳转到通知设置页面")
    
    # 消息统计
    st.subheader("消息统计")
    
    col1, col2 = st.columns(2)
    
    with col1:
        # 消息类型分布
        message_type_dist = pd.DataFrame({
            '消息类型': ['业务提醒', '系统通知', '预警消息', '审批通知'],
            '数量': [4, 3, 2, 1]
        })
        
        fig_type = px.pie(message_type_dist, values='数量', names='消息类型',
                        title="消息类型分布")
        st.plotly_chart(fig_type, use_container_width=True)
    
    with col2:
        # 消息处理趋势
        dates = pd.date_range(start='2024-03-09', end='2024-03-15', freq='D')
        message_trend = pd.DataFrame({
            '日期': dates,
            '接收消息': [25, 30, 28, 35, 32, 28, 28],
            '已处理消息': [23, 28, 26, 33, 30, 26, 25]
        })
        
        fig_trend = px.line(message_trend, x='日期', y=['接收消息', '已处理消息'],
                          title="消息处理趋势")
        st.plotly_chart(fig_trend, use_container_width=True)
    
    # 通知设置
    st.subheader("通知设置")
    
    col1, col2 = st.columns(2)
    
    with col1:
        st.subheader("推送设置")
        st.checkbox("启用推送通知", value=True)
        st.checkbox("声音提醒", value=True)
        st.checkbox("震动提醒", value=True)
        st.checkbox("屏幕亮起", value=False)
        
        st.selectbox("免打扰时间", ["关闭", "22:00-08:00", "23:00-07:00", "自定义"])
    
    with col2:
        st.subheader("消息类型设置")
        st.checkbox("系统通知", value=True)
        st.checkbox("业务提醒", value=True)
        st.checkbox("预警消息", value=True)
        st.checkbox("审批通知", value=True)
        st.checkbox("营销消息", value=False)
        
        st.selectbox("消息保留时间", ["7天", "15天", "30天", "永久"])

# 离线功能页面
elif page_selection == "离线功能":
    st.header("📴 离线功能")
    
    # 离线状态概览
    st.subheader("离线状态概览")
    
    col1, col2, col3, col4 = st.columns(4)
    
    with col1:
        st.metric("离线数据", "156条", "+12条")
    
    with col2:
        st.metric("待同步数据", "23条", "+5条")
    
    with col3:
        st.metric("同步成功率", "98.5%", "+0.3%")
    
    with col4:
        st.metric("最后同步", "2分钟前", "")
    
    # 离线数据管理
    st.subheader("离线数据管理")
    
    offline_data = pd.DataFrame({
        '时间': ['14:30', '14:25', '14:20', '14:15', '14:10', '14:05', '14:00', '13:55'],
        '操作类型': ['入库', '出库', '查询', '盘点', '入库', '出库', '查询', '盘点'],
        '商品编码': ['P001', 'P002', 'P003', 'P004', 'P005', 'P006', 'P007', 'P008'],
        '商品名称': ['电子产品A', '机械配件B', '化工原料C', '食品D', '纺织品E', '包装材料F', '工具G', '配件H'],
        '数量': [50, -30, 0, 0, 100, -25, 0, 0],
        '操作员': ['张三', '李四', '王五', '赵六', '张三', '李四', '王五', '赵六'],
        '同步状态': ['已同步', '待同步', '已同步', '同步中', '已同步', '待同步', '已同步', '同步失败']
    })
    
    # 根据同步状态设置行颜色
    # 使用缓存来避免重复计算样式，减少表格抖动
    def highlight_sync_status(row):
        if row['同步状态'] == '已同步':
            return ['background-color: #e8f5e8'] * len(row)
        elif row['同步状态'] == '同步失败':
            return ['background-color: #ffebee'] * len(row)
        elif row['同步状态'] == '同步中':
            return ['background-color: #e3f2fd'] * len(row)
        else:  # 待同步
            return ['background-color: #fff3cd'] * len(row)
    
    styled_df = offline_data.style.apply(highlight_sync_status, axis=1)
    st.dataframe(styled_df, use_container_width=True)
    
    # 同步操作
    st.subheader("数据同步")
    
    col1, col2, col3, col4 = st.columns(4)
    
    with col1:
        if st.button("🔄 立即同步", type="primary", use_container_width=True):
            st.success("数据同步已启动")
    
    with col2:
        if st.button("📤 上传离线数据", use_container_width=True):
            st.success("离线数据上传中...")
    
    with col3:
        if st.button("📥 下载最新数据", use_container_width=True):
            st.success("最新数据下载中...")
    
    with col4:
        if st.button("🗑️ 清理已同步数据", use_container_width=True):
            st.success("已同步数据已清理")
    
    # 离线功能设置
    st.subheader("离线功能设置")
    
    col1, col2 = st.columns(2)
    
    with col1:
        st.subheader("数据缓存设置")
        st.checkbox("启用离线模式", value=True)
        st.checkbox("自动缓存常用数据", value=True)
        st.checkbox("WiFi环境自动同步", value=True)
        st.checkbox("移动网络同步", value=False)
        
        cache_size = st.selectbox("缓存大小限制", ["100MB", "200MB", "500MB", "1GB"])
        cache_time = st.selectbox("缓存保留时间", ["1天", "3天", "7天", "15天"])
    
    with col2:
        st.subheader("同步策略设置")
        sync_frequency = st.selectbox("同步频率", ["实时", "每5分钟", "每15分钟", "每小时", "手动"])
        sync_condition = st.selectbox("同步条件", ["有网络时", "仅WiFi", "仅移动网络"])
        
        st.checkbox("同步时压缩数据", value=True)
        st.checkbox("同步失败重试", value=True)
        st.checkbox("同步完成通知", value=True)
        
        retry_times = st.selectbox("重试次数", ["1次", "3次", "5次", "10次"])
    
    # 离线功能状态
    st.subheader("离线功能状态")
    
    status_data = pd.DataFrame({
        '功能模块': ['库存查询', '商品扫码', '入库操作', '出库操作', '盘点记录', '报表查看'],
        '离线支持': ['✅ 支持', '✅ 支持', '✅ 支持', '✅ 支持', '✅ 支持', '❌ 不支持'],
        '缓存数据量': ['1.2MB', '0.8MB', '2.1MB', '1.5MB', '0.9MB', '0MB'],
        '最后更新': ['2分钟前', '5分钟前', '1分钟前', '3分钟前', '4分钟前', '无'],
        '状态': ['正常', '正常', '正常', '正常', '正常', '需要网络']
    })
    
    st.dataframe(status_data, use_container_width=True)
    
    # 网络状态监控
    st.subheader("网络状态监控")
    
    col1, col2 = st.columns(2)
    
    with col1:
        # 网络连接历史
        network_history = pd.DataFrame({
            '时间': pd.date_range(start='2024-03-15 08:00', periods=8, freq='H'),
            '网络状态': ['WiFi', '4G', '离线', '4G', 'WiFi', 'WiFi', '4G', 'WiFi'],
            '信号强度': [85, 70, 0, 65, 90, 88, 72, 92]
        })
        
        fig_network = px.line(network_history, x='时间', y='信号强度',
                            color='网络状态', title="网络连接历史")
        st.plotly_chart(fig_network, use_container_width=True)
    
    with col2:
        # 数据使用统计
        data_usage = pd.DataFrame({
            '数据类型': ['上传数据', '下载数据', '同步数据'],
            '今日使用(MB)': [12.5, 8.3, 15.2],
            '本月使用(MB)': [156.8, 98.7, 203.5]
        })
        
        fig_usage = px.bar(data_usage, x='数据类型', y=['今日使用(MB)', '本月使用(MB)'],
                         title="数据使用统计", barmode='group')
        st.plotly_chart(fig_usage, use_container_width=True)

# 用户设置页面
elif page_selection == "用户设置":
    st.header("⚙️ 用户设置")
    
    # 个人信息设置
    st.subheader("个人信息")
    
    col1, col2 = st.columns(2)
    
    with col1:
        st.text_input("用户名", value="张三")
        st.text_input("工号", value="EMP001")
        st.text_input("部门", value="仓储部")
        st.text_input("职位", value="仓库管理员")
    
    with col2:
        st.text_input("手机号", value="138****1234")
        st.text_input("邮箱", value="zhangsan@company.com")
        st.selectbox("语言", ["中文", "English"])
        st.selectbox("时区", ["北京时间 (UTC+8)", "上海时间 (UTC+8)"])
    
    # 应用设置
    st.subheader("应用设置")
    
    col1, col2 = st.columns(2)
    
    with col1:
        st.subheader("界面设置")
        st.selectbox("主题", ["浅色主题", "深色主题", "跟随系统"])
        st.selectbox("字体大小", ["小", "中", "大", "特大"])
        st.checkbox("启用手势导航", value=True)
        st.checkbox("显示操作提示", value=True)
        st.checkbox("启用快捷操作", value=True)
    
    with col2:
        st.subheader("功能设置")
        st.checkbox("自动登录", value=True)
        st.checkbox("记住密码", value=True)
        st.checkbox("生物识别登录", value=False)
        st.selectbox("自动锁屏时间", ["1分钟", "5分钟", "15分钟", "30分钟", "从不"])
        st.selectbox("数据刷新频率", ["实时", "每分钟", "每5分钟", "手动"])
    
    # 安全设置
    st.subheader("安全设置")
    
    col1, col2 = st.columns(2)
    
    with col1:
        st.subheader("密码设置")
        if st.button("修改登录密码", use_container_width=True):
            st.info("跳转到密码修改页面")
        
        if st.button("设置手势密码", use_container_width=True):
            st.info("跳转到手势密码设置")
        
        if st.button("绑定生物识别", use_container_width=True):
            st.info("跳转到生物识别绑定")
    
    with col2:
        st.subheader("设备管理")
        device_list = pd.DataFrame({
            '设备名称': ['iPhone 12', 'iPad Air', 'Android Phone'],
            '设备类型': ['手机', '平板', '手机'],
            '最后登录': ['2024-03-15 14:30', '2024-03-14 16:20', '2024-03-10 09:15'],
            '状态': ['当前设备', '已授权', '已授权']
        })
        
        st.dataframe(device_list, use_container_width=True)
        
        if st.button("解绑所有设备", use_container_width=True):
            st.warning("确认解绑所有设备？")
    
    # 数据与隐私
    st.subheader("数据与隐私")
    
    col1, col2 = st.columns(2)
    
    with col1:
        st.subheader("数据管理")
        st.checkbox("允许数据收集", value=True)
        st.checkbox("允许使用分析", value=True)
        st.checkbox("允许崩溃报告", value=True)
        
        if st.button("导出个人数据", use_container_width=True):
            st.success("数据导出请求已提交")
        
        if st.button("清除本地数据", use_container_width=True):
            st.warning("确认清除所有本地数据？")
    
    with col2:
        st.subheader("隐私设置")
        st.checkbox("允许位置访问", value=True)
        st.checkbox("允许摄像头访问", value=True)
        st.checkbox("允许麦克风访问", value=False)
        st.checkbox("允许通讯录访问", value=False)
        
        st.selectbox("数据保留期限", ["30天", "90天", "1年", "永久"])
    
    # 关于应用
    st.subheader("关于应用")
    
    col1, col2 = st.columns(2)
    
    with col1:
        st.info(
            """
            **供应链管理移动端**
            
            版本: v2.1.0
            
            构建: 20240315
            
            开发商: 供应链科技有限公司
            
            技术支持: support@scm.com
            """
        )
    
    with col2:
        if st.button("检查更新", use_container_width=True):
            st.success("当前已是最新版本")
        
        if st.button("用户手册", use_container_width=True):
            st.info("打开用户手册")
        
        if st.button("意见反馈", use_container_width=True):
            st.info("跳转到反馈页面")
        
        if st.button("联系客服", use_container_width=True):
            st.info("跳转到客服页面")

# 移动端分析页面
elif page_selection == "移动端分析":
    st.header("📊 移动端分析")
    
    # 使用统计概览
    st.subheader("使用统计概览")
    
    col1, col2, col3, col4 = st.columns(4)
    
    with col1:
        st.metric("日活跃用户", "89人", "+5人")
    
    with col2:
        st.metric("月活跃用户", "156人", "+12人")
    
    with col3:
        st.metric("平均使用时长", "45分钟", "+3分钟")
    
    with col4:
        st.metric("用户留存率", "85.6%", "+2.1%")
    
    # 用户行为分析
    st.subheader("用户行为分析")
    
    col1, col2 = st.columns(2)
    
    with col1:
        # 功能使用热力图
        hours = list(range(24))
        functions = ['库存查询', '扫码操作', '入库管理', '出库管理', '报表查看']
        
        # 生成模拟热力图数据
        heatmap_data = []
        for func in functions:
            for hour in hours:
                usage = max(0, 50 + 30*np.sin((hour-9)*np.pi/8) + np.random.normal(0, 10))
                if hour < 8 or hour > 18:
                    usage *= 0.3
                heatmap_data.append({'功能': func, '小时': hour, '使用次数': int(usage)})
        
        heatmap_df = pd.DataFrame(heatmap_data)
        heatmap_pivot = heatmap_df.pivot(index='功能', columns='小时', values='使用次数')
        
        fig_heatmap = px.imshow(heatmap_pivot, 
                              title="功能使用热力图（24小时）",
                              color_continuous_scale="Blues")
        st.plotly_chart(fig_heatmap, use_container_width=True)
    
    with col2:
        # 用户活跃度分布
        activity_levels = pd.DataFrame({
            '活跃度': ['高活跃', '中活跃', '低活跃', '不活跃'],
            '用户数': [45, 67, 32, 12],
            '占比': ['28.8%', '42.9%', '20.5%', '7.7%']
        })
        
        fig_activity = px.pie(activity_levels, values='用户数', names='活跃度',
                            title="用户活跃度分布")
        st.plotly_chart(fig_activity, use_container_width=True)
    
    # 性能分析
    st.subheader("性能分析")
    
    col1, col2 = st.columns(2)
    
    with col1:
        # 响应时间趋势
        dates = pd.date_range(start='2024-03-01', end='2024-03-15', freq='D')
        performance_data = pd.DataFrame({
            '日期': dates,
            '平均响应时间': [0.8 + 0.2*np.sin(i*2*np.pi/7) + np.random.normal(0, 0.1) 
                          for i in range(len(dates))],
            '页面加载时间': [1.2 + 0.3*np.sin(i*2*np.pi/7) + np.random.normal(0, 0.15) 
                          for i in range(len(dates))]
        })
        
        fig_performance = px.line(performance_data, x='日期', 
                                y=['平均响应时间', '页面加载时间'],
                                title="性能指标趋势")
        st.plotly_chart(fig_performance, use_container_width=True)
    
    with col2:
        # 错误率统计
        error_data = pd.DataFrame({
            '错误类型': ['网络错误', '数据错误', '权限错误', '系统错误'],
            '发生次数': [12, 8, 5, 3],
            '错误率': ['0.8%', '0.5%', '0.3%', '0.2%']
        })
        
        fig_errors = px.bar(error_data, x='错误类型', y='发生次数',
                          title="错误类型统计")
        st.plotly_chart(fig_errors, use_container_width=True)
    
    # 设备分析
    st.subheader("设备分析")
    
    device_analysis = pd.DataFrame({
        '设备类型': ['Android手机', 'iPhone', 'iPad', 'Android平板'],
        '用户数量': [89, 45, 15, 7],
        '平均使用时长': ['48分钟', '42分钟', '35分钟', '28分钟'],
        '崩溃率': ['0.5%', '0.3%', '0.2%', '0.4%'],
        '满意度': ['4.2', '4.5', '4.3', '4.1']
    })
    
    st.dataframe(device_analysis, use_container_width=True)
    
    # 用户反馈分析
    st.subheader("用户反馈分析")
    
    col1, col2 = st.columns(2)
    
    with col1:
        # 反馈类型分布
        feedback_types = pd.DataFrame({
            '反馈类型': ['功能建议', '性能问题', '界面优化', '错误报告'],
            '数量': [25, 18, 15, 8]
        })
        
        fig_feedback = px.pie(feedback_types, values='数量', names='反馈类型',
                            title="用户反馈类型分布")
        st.plotly_chart(fig_feedback, use_container_width=True)
    
    with col2:
        # 满意度趋势
        satisfaction_data = pd.DataFrame({
            '月份': ['1月', '2月', '3月'],
            '满意度评分': [4.1, 4.3, 4.2],
            '参与评分人数': [45, 52, 48]
        })
        
        fig_satisfaction = px.line(satisfaction_data, x='月份', y='满意度评分',
                                 title="用户满意度趋势", markers=True)
        fig_satisfaction.update_yaxis(range=[3.5, 5.0])
        st.plotly_chart(fig_satisfaction, use_container_width=True)
    
    # 优化建议
    st.subheader("优化建议")
    
    optimization_suggestions = [
        "📱 优化Android设备的性能表现，减少崩溃率",
        "⚡ 继续优化页面加载速度，目标控制在1秒以内",
        "🔧 增加离线功能的稳定性，提高用户体验",
        "📊 增加更多数据可视化功能，满足用户需求",
        "🎨 优化界面设计，提高操作便利性",
        "🔔 改进消息推送机制，减少打扰",
        "📈 增加个性化设置选项，满足不同用户需求",
        "🛡️ 加强数据安全保护，提升用户信任度"
    ]
    
    for suggestion in optimization_suggestions:
        st.info(suggestion)

# 页面底部信息
st.markdown("---")
st.markdown(
    """
    <div style="text-align: center; color: #666; font-size: 0.9rem;">
        移动端界面系统 | 数据更新时间: {}
    </div>
    """.format(datetime.now().strftime("%Y-%m-%d %H:%M:%S")),
    unsafe_allow_html=True
)